package com.yxx.business.service;

import java.util.List;

import com.yxx.common.core.domain.PageResult;
import com.yxx.business.entity.TbProjectInfoDo;
import com.yxx.business.entity.TbProjectInfoVo;
import com.yxx.business.entity.TbProjectInfoQueryDto;
import com.yxx.business.entity.TbProjectInfoEditDto;
import com.yxx.common.core.service.IServicePlus;

/**
 * 项目信息Service接口
 *
 * @author yxx
 * @date 2025-08-03
 */
public interface ITbProjectInfoService extends IServicePlus<TbProjectInfoDo> {

    /**
     * 查询项目信息分页结果
     *
     * @param tbProjectInfoQueryDto 项目信息查询实体
     * @return 项目信息分页
     */
    public PageResult<TbProjectInfoVo> selectTbProjectInfoVoPage(TbProjectInfoQueryDto tbProjectInfoQueryDto);

    /**
     * 查询项目信息Vo列表
     *
     * @param tbProjectInfoQueryDto 项目信息查询实体
     * @return 项目信息集合
     */
    public List<TbProjectInfoVo> selectTbProjectInfoVoList(TbProjectInfoQueryDto tbProjectInfoQueryDto);

    /**
     * 查询项目信息Do列表
     *
     * @param tbProjectInfoQueryDto 项目信息查询实体
     * @return 项目信息集合
     */
    public List<TbProjectInfoDo> selectTbProjectInfoDoList(TbProjectInfoQueryDto tbProjectInfoQueryDto);

    /**
     * 查询单个项目信息
     *
     * @param projectId 项目信息主键
     * @return 项目信息单个
     */
    public TbProjectInfoVo selectTbProjectInfoVoByProjectId(Long projectId);

    /**
     * 新增项目信息
     *
     * @param tbProjectInfoQueryDto 项目信息编辑实体
     * @return 结果
     */
    public int insertTbProjectInfo(TbProjectInfoEditDto tbProjectInfoQueryDto);

    /**
     * 修改项目信息
     *
     * @param projectId 主键
     * @param tbProjectInfoQueryDto 项目信息编辑实体
     * @return 结果
     */
    public int updateTbProjectInfo(Long projectId, TbProjectInfoEditDto tbProjectInfoQueryDto);

    /**
     * 批量删除项目信息
     *
     * @param projectIds 项目信息主键集合
     * @return 结果
     */
    public int deleteTbProjectInfoByProjectIds(List<Long> projectIds);

    /**
     * 删除单个项目信息信息
     *
     * @param projectId 项目信息主键
     * @return 结果
     */
    public int deleteTbProjectInfoByProjectId(Long projectId);
}
